Generic implementation of Cipher-based Message Authentication Code (CMAC),
otherwise known as OMAC1.
Usage
We will use AES-128 block cipher from aes crate.
To get the authentication code:
extern crate cmac;
extern crate aes;
use aes::Aes128;
use cmac::{Cmac, Mac};
# fn main() {
let mut mac = Cmac::<Aes128>::new_varkey(b"very secret key.").unwrap();
mac.input(b"input message");
let result = mac.result();
let code_bytes = result.code();
# }
To verify the message:
# extern crate cmac;
# extern crate aes;
# use aes::Aes128;
# use cmac::{Cmac, Mac};
# fn main() {
let mut mac = Cmac::<Aes128>::new_varkey(b"very secret key.").unwrap();
mac.input(b"input message");
# let code_bytes = mac.clone().result().code();
mac.verify(&code_bytes).unwrap();
# }